﻿using System.Collections.Generic;

namespace MinecraftEnchantCalculator.Data.Table;

/// <summary>
///   通用表格数据结构，用于存储各类JSON数据文件的结构化信息
///   提供表名、描述、列定义及行数据的统一封装
/// </summary>
/// <typeparam name="TRow">行数据的实体类型，需与具体业务数据结构匹配</typeparam>
public class TableStruct<TRow>
{
  /// <summary>
  ///   表格名称，用于标识当前数据表格的唯一名称
  ///   对应JSON数据中的"TableName"字段
  /// </summary>
  public string TableName { get; init; } = string.Empty;

  /// <summary>
  ///   表格描述信息，说明当前表格的用途或包含的数据内容
  ///   对应JSON数据中的"Description"字段
  /// </summary>
  public string Description { get; init; } = null!;

  /// <summary>
  ///   表格列定义集合，包含各列的名称和数据类型信息
  ///   对应JSON数据中的"ColumnDefs"字段，用于描述表格的结构
  /// </summary>
  public IReadOnlyList<ColumnDef> ColumnDefs { get; init; } = null!;

  /// <summary>
  ///   表格行数据集合，存储具体的业务数据记录
  ///   对应JSON数据中的"Rows"字段，每行数据类型为TRow
  /// </summary>
  public IReadOnlyList<TRow> Rows { get; init; } = null!;
}